/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package dao;

import entidades.Club;
import entidades.Liga;
import entidades.Usuarios;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author usuario
 */
public class Principal {
    
    public Club obtenerCLub(int id){
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        Club club = (Club) s.load(Club.class, id);
        //club.setPresupuesto(25);
        //club.setNombre("Calchaqui Football Club");
        //s.getTransaction().commit();
        s.close();
        return club;
    }
    
    public Usuarios obtenerUsuario(int id){
        Usuarios usuario = new Usuarios();
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        
        usuario = (Usuarios) s.get(Usuarios.class, id);
        
        s.close();
        
        return usuario;
    }
    
    public boolean crearUsuario(Usuarios u){
        boolean respuesta = false;
        
        Club club;
        club = this.crearClub();
        u.setClub(club);
        
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        
        try{
            
            s.save(u);
            s.getTransaction().commit();
            s.close();
            respuesta = true;
            
        }catch(Exception ex){
            s.getTransaction().rollback();
            ex.printStackTrace();
        }
        
        
        return respuesta;
    }
    
    public Liga obtenerLiga(int id){
        Liga liga;
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        
        liga = (Liga) s.get(Liga.class, id);
        
        s.close();
        
        return liga;
    }
    
    public Usuarios getUsuarioByNombre(String nombre){
        
        Usuarios u = null;
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        List<Usuarios> resultado = s.createCriteria(Usuarios.class)
                .add(Restrictions.eq("usuario", nombre)).list();
        u = resultado.get(0);
        
        s.close();
        
        return u;
    }

    private Club crearClub() {
        Club club = new Club();
        club.setNombre("Nuevo");
        club.setPresupuesto(0);
        club.setUrlEscudo("nada por aqui");
        
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        
        try{
            
            s.save(club);
            s.getTransaction().commit();
            s.close();
            
        }catch(Exception ex){
            s.getTransaction().rollback();
            ex.printStackTrace();
        }
        
        return club;
    }

  
    public void actualizarClub(Club club){
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session s = sf.openSession();
        s.beginTransaction();
        
        try{
            
            s.update(club);
            s.getTransaction().commit();
            s.close();
            
        }catch(Exception ex){
            s.getTransaction().rollback();
            ex.printStackTrace();
        }
    }

    public boolean validarLoginUsuario(String usuario, String contrasenia) {
        SessionFactory sf = HibernateUtil.getSessionFactory();
        Session sesion = sf.openSession();
        sesion.beginTransaction();

        Usuarios usuario1 = null;

        try {
            List<Usuarios> resultado = sesion.createCriteria(Usuarios.class)
                    .add(Restrictions.eq("usuario", usuario))
                    .list();

            if (!resultado.isEmpty()) {
                usuario1 = resultado.get(0);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            sesion.close();
        }
        if (usuario1 == null) {
            return false;
        }
        return (usuario1.getPassword().equals(contrasenia));
    }

   
    
}
